<!DOCTYPE HTML>
<html>
<head>
<title>数学函数 | AutoHotkey</title>
<meta name="description" content="Functions for performing various mathematical operations such as rounding, exponentiation, squaring, etc." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>数学函数</h1>
<p>用于执行各种数学运算的函数, 如四舍五入, 取幂, 平方等.</p>

<h2 id="toc">目录</h2>
<ul>
  <li><a href="#General">一般数学</a>
    <ul>
      <li><a href="#Abs">Abs</a>: 返回数字的绝对值.</li>
      <li><a href="#Ceil">Ceil</a>: 返回数字向上最近的整数(向上取整).</li>
      <li><a href="#Exp">Exp</a>: 返回 e 的 N 次方.</li>
      <li><a href="#Floor">Floor</a>: 返回数字向下最近的整数(向下取整).</li>
      <li><a href="#Log">Log</a>: 返回数字的对数(10 为底).</li>
      <li><a href="#Ln">Ln</a>: 返回数字的自然对数(e 为底).</li>
      <li><a href="#Max">Max</a>: 返回一个或多个数字的最大值.</li>
      <li><a href="#Min">Min</a>: 返回一个或多个数字的最小值.</li>
      <li><a href="#Mod">Mod</a>: 返回除法的余数</li>
      <li><a href="#Round">Round</a>: 返回数字四舍五入到 N 个小数位的数字.</li>
      <li><a href="#Sqrt">Sqrt</a>: 返回数字的平方根.</li>
    </ul>
  </li>
  <li><a href="#Trigonometry">三角函数</a>:
    <ul>
      <li><a href="#Sin">Sin</a>: 返回数字的三角正弦值.</li>
      <li><a href="#Cos">Cos</a>: 返回数字的三角余弦值.</li>
      <li><a href="#Tan">Tan</a>: 返回数字的三角正切值.</li>
      <li><a href="#ASin">ASin</a>: 返回以弧度表示的反正弦值(其正弦值为指定的数字).</li>
      <li><a href="#ACos">ACos</a>: 返回以弧度表示的反余弦值(其余弦值为指定的数字).</li>
      <li><a href="#ATan">ATan</a>: 返回以弧度表示的反正切值(其正切值为指定的数字).</li>
    </ul>
  </li>
  <li><a href="#Errors">错误处理</a></li>
</ul>

<h2 id="General">一般数学</h2>

<h3 id="Abs">Abs</h3>
<p>返回 <em>Number</em> 的绝对值.</p>
<pre class="Syntax">Value := <span class="func">Abs</span>(Number)</pre>
<p>返回值类型和 <em>Number</em> 保持一致(整数或浮点数).</p>
<pre class="NoIndent">MsgBox, % Abs(-1.2) <em>; 返回 1.2</em></pre>

<h3 id="Ceil">Ceil</h3>
<p>返回 <em>Number</em> 向上取整后的整数(不含任何 .00 后缀).</p>
<pre class="Syntax">Value := <span class="func">Ceil</span>(Number)</pre>
<pre class="NoIndent">MsgBox, % Ceil(1.2)  <em>; 返回 2</em>
MsgBox, % Ceil(-1.2) <em>; 返回 -1</em></pre>

<h3 id="Exp">Exp</h3>
<p>返回 <em>e</em>(近似值为 2.71828182845905) 的 <em>N</em> 次幂.</p>
<pre class="Syntax">Value := <span class="func">Exp</span>(N)</pre>
<p><em>N</em> 可以为负数或小数. 要使用 <em>e</em> 之外其他数计算, 请使用 <a href="../Variables.htm#pow">** 运算符</a>.</p>
<pre class="NoIndent">MsgBox, % Exp(1.2) <em>; 返回 3.320117</em></pre>

<h3 id="Floor">Floor</h3>
<p>返回 <em>Number</em> 向下取整后的整数(不含任何 .00 后缀).</p>
<pre class="Syntax">Value := <span class="func">Floor</span>(Number)</pre>
<pre class="NoIndent">MsgBox, % Floor(1.2)  <em>; 返回 1</em>
MsgBox, % Floor(-1.2) <em>; 返回 -2</em></pre>

<h3 id="Log">Log</h3>
<p>返回 <em>Number</em> 的对数(10 为底).</p>
<pre class="Syntax">Value := <span class="func">Log</span>(Number)</pre>
<p>结果格式化为<a href="SetFormat.htm">浮点数</a>. 如果 <em>Number</em> 为负数则返回空字符串.</p>
<pre class="NoIndent">MsgBox, % Log(1.2) <em>; 返回 0.079181</em></pre>

<h3 id="Ln">Ln</h3>
<p>返回 <em>Number</em> 底数为 e 的自然对数.</p>
<pre class="Syntax">Value := <span class="func">Ln</span>(Number)</pre>
<p>结果格式化为<a href="SetFormat.htm">浮点数</a>. 如果 <em>Number</em> 为负数则返回空字符串.</p>
<pre class="NoIndent">MsgBox, % Ln(1.2) <em>; 返回 0.182322</em></pre>

<h3 id="Max">Max <span class="ver">[v1.1.27+]</span></h3>
<p>返回一个或多个数字的最大值.</p>
<pre class="Syntax">Value := <span class="func">Max</span>(Number1 <span class="optional">, Number2, ...</span>)</pre>
<p>如果其中一个输入值为非数字的, 则返回空字符串.</p>
<pre class="NoIndent">MsgBox, % Max(2.11, -2, 0) <em>; 返回 2.11</em></pre>
<p>您还可以指定一个<a href="../Functions.htm#Variadic">可变参数</a>来比较数组中的多个值. 例如:</p>
<pre class="NoIndent">array := [1, 2, 3, 4]
MsgBox, % Max(array*) <em>; 返回 4</em>
</pre>

<h3 id="Min">Min <span class="ver">[v1.1.27+]</span></h3>
<p>返回一个或多个数字的最小值.</p>
<pre class="Syntax">Value := <span class="func">Min</span>(Number1 <span class="optional">, Number2, ...</span>)</pre>
<p>如果其中一个输入值为非数字的, 则返回空字符串.</p>
<pre class="NoIndent">MsgBox, % Min(2.11, -2, 0) <em>; 返回 -2</em></pre>
<p>您还可以指定一个<a href="../Functions.htm#Variadic">可变参数</a>来比较数组中的多个值. 例如:</p>
<pre class="NoIndent">array := [1, 2, 3, 4]
MsgBox, % Min(array*) <em>; 返回 1</em></pre>

<h3 id="Mod">Mod</h3>
<p>返回 <em>Dividend</em> 除以 <em>Divisor</em> 之后的余数.</p>
<pre class="Syntax">Value := <span class="func">Mod</span>(Dividend, Divisor)</pre>
<p>返回值的正负符号总是与 Dividend 相同(而不考虑 Divisor), 例如, mod(5, 3) 和 mod(5, -3) 的结果都为 2, 但 mod(-5, 3) 和 mod(-5, -3) 的结果为 -2. 如果传入浮点数, 则返回值也是浮点数, 例如, mod(5.0, 3) 的结果为 2.0 而 mod(5, 3.5) 的结果为 1.5. 如果 Divisor 为 0, 则返回空值(空字符串).</p>
<pre class="NoIndent">MsgBox, % Mod(7.5, 2) <em>; 返回 1.5(2 x 3 + 1.5)</em></pre>

<h3 id="Round">Round</h3>
<p>返回 <em>Number</em> 四舍五入到 <em>N</em> 个小数位的数字.</p>
<pre class="Syntax">Value := <span class="func">Round</span>(Number <span class="optional">, N</span>)</pre>
<p>如果 <em>N</em> 省略或为 0, 表示对 <em>Number</em> 四舍五入后取整到最近的整数:</p>
<pre class="NoIndent">MsgBox, % Round(3.14)    <em>; 返回 3</em></pre>
<p>如果 <em>N</em> 为正数, 则 <em>Number</em> 四舍五入到 <em>N</em> 个小数位:</p>
<pre class="NoIndent">MsgBox, % Round(3.14, 1) <em>; 返回 3.1</em></pre>
<p>如果 <em>N</em> 为负数, 则 <em>Number</em> 四舍五入到小数点左边 <em>N</em> 位:</p>
<pre class="NoIndent">MsgBox, % Round(345, -1) <em>; 返回 350, 这里的 -1 表示 5, 所以向上取整.</em>
MsgBox, % Round(345, -2) <em>; 返回 300, 因为 -2 表示 4, 所以向下取整.</em></pre>
<p>不同于 <a href="Transform.htm">Transform Round</a> 语句, 无论 <em>N</em> 被省略还是小于 1, 返回值总是不含 .000 后缀. <span class="headnote">[v1.0.44.01+]</span>: 当 <em>N</em> 的值大于 0 时, 总是精确显示 <em>N</em> 个小数点后位数, 而不会被 <a href="SetFormat.htm">SetFormat</a> 影响. 如果这不是您期望的效果, 请在 Round() 返回之后再进行一次数学运算; 例如: <code>Round(3.333, 1)<strong>+0</strong></code>.</p>

<h3 id="Sqrt">Sqrt</h3>
<p>返回 <em>Number</em> 的平方根.</p>
<pre class="Syntax">Value := <span class="func">Sqrt</span>(Number)</pre>
<p>结果格式化为<a href="SetFormat.htm">浮点数</a>. 如果 <em>Number</em> 为负数则函数返回空字值(空字符串).</p>
<pre class="NoIndent">MsgBox, % Sqrt(16) <em>; 返回 4</em></pre>

<h2 id="Trigonometry">三角函数</h2>

<p class="note"><strong>注意</strong>: 要将弧度值转换为度数值, 可用 弧度乘以 180/pi(约为 57.29578). 要将度数值转为弧度值, 可用 读数值乘以 pi/180(约为 0.01745329252). pi 的值(约为 3.141592653589793) 为 4 乘以 1 的反正切的结果. (pi = 4 * ATan(1)).</p>

<h3 id="Sin">Sin</h3>
<p>返回 <em>Number</em> 的正弦.</p>
<pre class="Syntax">Value := <span class="func">Sin</span>(Number)</pre>
<p><em>Number</em> 必须为弧度值.</p>
<pre class="NoIndent">MsgBox, % Sin(1.2) <em>; 返回 0.932039</em></pre>

<h3 id="Cos">Cos</h3>
<p>返回 <em>Number</em> 的余弦值.</p>
<pre class="Syntax">Value := <span class="func">Cos</span>(Number)</pre>
<p><em>Number</em> 必须为弧度值.</p>
<pre class="NoIndent">MsgBox, % Cos(1.2) <em>; 返回 0.362358</em></pre>

<h3 id="Tan">Tan</h3>
<p>返回 <em>Number</em> 的正切值.</p>
<pre class="Syntax">Value := <span class="func">Tan</span>(Number)</pre>
<p><em>Number</em> 必须为弧度值.</p>
<pre class="NoIndent">MsgBox, % Tan(1.2) <em>; 返回 2.572152</em></pre>

<h3 id="ASin">ASin</h3>
<p>返回弧度表示的反正弦值(其正弦值为 <em>Number</em>).</p>
<pre class="Syntax">Value := <span class="func">ASin</span>(Number)</pre>
<p>如果 <em>Number</em> 小于 -1 或大于 1, 则函数返回空值(空字符串).</p>
<pre class="NoIndent">MsgBox, % ASin(0.2) <em>; 返回 0.201358</em></pre>

<h3 id="ACos">ACos</h3>
<p>返回弧度表示的反余弦值(其余弦值为 <em>Number</em>).</p>
<pre class="Syntax">Value := <span class="func">ACos</span>(Number)</pre>
<p>如果 <em>Number</em> 小于 -1 或大于 1, 则函数返回空值(空字符串).</p>
<pre class="NoIndent">MsgBox, % ACos(0.2) <em>; 返回 1.369438</em></pre>

<h3 id="ATan">ATan</h3>
<p>返回弧度表示的反正切值(其正切值为 <em>Number</em>).</p>
<pre class="Syntax">Value := <span class="func">ATan</span>(Number)</pre>
<pre class="NoIndent">MsgBox, % ATan(1.2) <em>; 返回 0.876058</em></pre>
</div>

<h2 id="Errors">错误处理</h2>
<p>无效操作, 如除以零通常会产生一个空的结果(空字符串).</p>
<p><a href="#Abs">Abs</a>, <a href="#Max">Max</a>, <a href="#Min">Min</a> 和 <a href="#Mod">Mod</a> 返回空字符串, 如果它们的传入参数是非数值的. 大多数数学函数不执行严格的类型检查, 因此可能会将非数值作为零或另一个数字处理. 例如, <code>Round("1.0foo")</code> 返回 1. 然而, 这一点预计会在 <a href="https://www.autohotkey.com/v2/">AutoHotkey v2</a> 有所改变. </p>

</body>
</html>